package com.firefly.admin.system.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.firefly.admin.system.service.FySystemUserRoleService;
import com.firefly.admin.system.entity.FySystemUserRole;
import com.firefly.admin.system.mapper.FySystemUserRoleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class FySystemUserRoleServiceImpl implements FySystemUserRoleService {
    @Autowired
    private FySystemUserRoleMapper fySystemUserRoleMapper;

    /**
     * 删除用户角色信息
     *
     * @param userId 用户ID
     * @return 操作结果
     */
    @Override
    public int deleteByUserId(Long userId) {
        LambdaQueryWrapper<FySystemUserRole> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(FySystemUserRole::getUserId, userId);
        return fySystemUserRoleMapper.delete(queryWrapper);
    }

    /**
     * 绑定用户角色
     *
     * @param userId  用户ID
     * @param roleIds 角色ID列表
     * @return 操作结果
     */
    @Override
    public int saveUserRoles(Long userId, List<Long> roleIds) {
        int result = 0;
        for (Long roleId : roleIds) {
            FySystemUserRole fySystemUserRole = new FySystemUserRole();
            fySystemUserRole.setUserId(userId);
            fySystemUserRole.setRoleId(roleId);
            result += fySystemUserRoleMapper.insert(fySystemUserRole);
        }
        return result;
    }

    /**
     * 通过角色查询用户角色绑定信息
     *
     * @param roleId 角色ID
     * @return 用户角色绑定管理列表
     */
    @Override
    public List<FySystemUserRole> selectByRoleId(Long roleId) {
        LambdaQueryWrapper<FySystemUserRole> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(FySystemUserRole::getRoleId, roleId);
        return fySystemUserRoleMapper.selectList(queryWrapper);
    }

    /**
     * 通过用户查询用户角色绑定信息
     *
     * @param userId 用户ID
     * @return 用户角色列表
     */
    @Override
    public List<FySystemUserRole> selectByUserId(Long userId) {
        LambdaQueryWrapper<FySystemUserRole> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(FySystemUserRole::getUserId, userId);
        return fySystemUserRoleMapper.selectList(queryWrapper);
    }
}
